#ifndef __SDLBASE_H_
#define __SDLBASE_H_

#include "SDL2/SDL.h"
#include <iostream>
#include "SDL2/SDL_ttf.h"
#include "SDL2/SDL_image.h"
#include <stdexcept>
#include <string>
#include <vector>
#include "SDLTool.h"

class SDLBase
{
public:
    SDL_Texture *background;                        /**< 记录背景图 */


    SDLBase();
    ~SDLBase();

    /**
     * @brief 将动画的相应帧画在画布上
     * 
     * @param renderer ： 2D渲染上下文
     */
    virtual void show(SDL_Renderer *renderer);

    /**
     * @brief 处理事件
     * 
     * @param event : 事件参数
     */
    virtual void handleEvent(SDL_Event event);

    /**
     * @brief 得到BaseId
     * 
     * @return int : 返回baseId
     */
    int getBaseId();                                /**< Get the Base Id */

    /**
     * @brief cout BaseId
     * 
     */
    void showBaseId();

    /**
     * @brief 加载图片到纹理中
     * 
     * @param renderer ： 2D渲染上下文
     * @param file ： 需要加载的图片
     * @return SDL_Texture* ： 返回的纹理
     */
    SDL_Texture* LoadImage(SDL_Renderer *renderer, string file);

    /**
     * @brief 设置背景
     * 
     * @param renderer ： 2D渲染上下文
     * @param filename ： 需要设置的背景图片
     */
    void setBackground(SDL_Renderer *renderer, string filename);

    /**
     * @brief 设置背景纹理
     * 
     * @param background ： 需要传递的纹理
     */
    void setBackground( SDL_Texture *background );

private:
    int isRealBackground; /**< 是否是自己创建的纹理 */
    int baseId; /**< 每一个SDLBase 都会记录一个ID, 这个ID就是程序运行的时间 */
};

#endif //__SDLBASE_H_